package cn.wisteria._properties.read;

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Locale;
import java.util.Properties;
import java.util.ResourceBundle;

/**
 * <p>
 * 读取properties文件类
 * </p>
 *
 * @author: zhu.chen
 * @date: 2020/12/28
 * @version: v1.0.0
 */
@Slf4j
public class PropertiesReadHelper {

    /**
     * <p>
     * 依据 config 包来解析
     * </p>
     *
     * @param filePath
     * @param key
     * @return String
     */
    public static String getValue1(String filePath, String key) {
        Config config = ConfigFactory.parseFile(new File(filePath));
        return config.getString(key);
    }

    /**
     * <p>
     * 依据 _properties.load 来解析
     * </p>
     *
     * @param filePath
     * @param key
     * @return String
     */
    public static String getValue2(String filePath, String key) {
        Properties properties = new Properties();
        try (FileInputStream fis = new FileInputStream(filePath)) {
            properties.load(fis);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return (String) properties.get(key);
    }

    /**
     * <p>
     * <p>
     * 依据 ResourceBundle 来解析
     * ResourceBundle：用于读取国际化的配置文件，普通配置文件不需要使用该类解析
     * 优先级：本地化资源（默认）> 加载系统默认 > 加载默认的资源文件。
     * myconfig._properties：local=default
     * myconfig_zh_CN._properties：local=zh_CN
     * myconfig_en_US._properties：local=en_US
     *
     * ResourceBundle的baseName填写myconfig即可。
     * </p>
     *
     * @param filePath
     * @param key
     * @return String
     */
    public static String getValue3(String filePath, String key) {
        ResourceBundle resourceBundle = ResourceBundle.getBundle(filePath, Locale.getDefault());
        return resourceBundle.getString(key);
    }

}
